﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using Biblioteca.Utils;
using SERIX.Util;

namespace SERIX
{
    /*
     * Autor      : IT-Developer1
     * Data       : 02/04/2010 11:03:48
     * Descricao  : 
     * Alteracoes : 
     * 
     */
    public partial class IndicadoresAcaoManut : Seguranca
    {
        string _idtMestre;

        string _operacao;
        string _idt;
        string _idtClasse;
        string _idtIndLimite;

        protected void Page_Load(object sender, EventArgs e)
        {
            base.OnLoad(e);

            //LovIndicadores1.Selecao += new SERIX.Controles.lovGenerica.SelecaoDelegate(lovIndicadorLimite);
            //LovIndicadores1.ConfigurarLov("Serix", "SRX_INDICADORES_ACOES", "IDT_IND", "DSC_IND", "DSC_IND", "Pesquisa de Indicadores", "Nome");

            string login = UsuAut.Login;
            _operacao = Request["OP"];
            if (!String.IsNullOrEmpty(Request["idt"]))
            {
                _idt = Server.UrlDecode(Criptografia.Descriptografar(Request["idt"]));
            }

            if (!Page.IsPostBack)
            {
                switch (_operacao)
                {
                    case "R":
                        {
                            lblTitulo.Text = "Detalhes do Indicador";
                            Cancelar_Button.Visible = false;
                            CIndicadoresAcoes dao = CIndicadoresAcoes.PesquisaporCodigo(_idt, login);
                            CarregaDados(dao);
                            DesabilitaControles();
                            break;
                        }
                    case "U":
                        {
                            lblTitulo.Text = "Alteração do Indicador";
                            CIndicadoresAcoes dao = CIndicadoresAcoes.PesquisaporCodigo(_idt, login);
                            CarregaDados(dao);
                            break;

                        }
                    case "I":
                        {
                            lblTitulo.Text = "Inserção do Indicador";
                            if (!String.IsNullOrEmpty(Request["idtMestre"]))
                            {
                                _idtMestre = Server.UrlDecode(Criptografia.Descriptografar(Request["idtMestre"]));
                                // guarda na sessão o idt do mestre
                                Session[Page.ToString() + "_IdtMestre"] = _idtMestre;
                            }
                            break;
                        }
                    case "D":
                        {
                            lblTitulo.Text = "Exclusão do Indicador";
                            CIndicadoresAcoes dao = CIndicadoresAcoes.PesquisaporCodigo(_idt, login);
                            CarregaDados(dao);
                            DesabilitaControles();
                            break;
                        }
                    default: break;
                }
            }
            SetaDadosMestre();
        }

        private void SetaDadosMestre()
        {
            if (_idtMestre == null)
                _idtMestre = (string)Session[Page.ToString() + "_IdtMestre"];

            string login = UsuAut.Login;
            if (!IsPostBack)
            {
                CAcoesProgramas dao1 = CAcoesProgramas.PesquisaporCodigo(_idtMestre, login);
                lblAcao.Text = dao1.Dsc_acao;
                //CProgramas dao2 = CProgramas.PesquisaporCodigo(dao1.Idt_prog, login);
                //lblPrograma.Text = dao2.Nom_prog;
                //lblPrograma.Attributes.Add("idtProg", dao1.Idt_prog);
            }
        }

        //private void lovIndicadorLimite(string chave, string descricao)
        //{
        //    txtIndicadorLimite.Text = descricao;
        //    txtIndicadorLimite.Attributes.Add("chave", chave);
        //}

        private void CarregaDados(CIndicadoresAcoes dao)
        {
            txtDescricao.Text = dao.Dsc_ind;
            txtRotulo.Text = dao.Rot_ind;

            //txtIndicadorLimite.Text = dao.Dsc_ind_lim;
            //txtIndicadorLimite.Attributes.Add("chave", dao.Idt_ind_limite);

            SqlIndicadorLimiteDS.SelectParameters["P_IDT_PROG"].DefaultValue = dao.Idt_prog;
            SqlIndicadorLimiteDS.SelectParameters["P_IDT_ACAO"].DefaultValue = dao.Idt_acao;
            SqlIndicadorLimiteDS.SelectParameters["P_IDT_IND"].DefaultValue = dao.Idt_ind;
            SqlIndicadorLimiteDS.DataBind();

            _idtIndLimite = dao.Idt_ind_limite;
            _idtClasse = dao.Idt_cla_ind;

            ddlTipos.SelectedValue = dao.Tpo_ind;
            ddlTotalizadores.SelectedValue = dao.Tpo_tot;
            ddlVinculos.SelectedValue = dao.Tpo_vinc;
            ddlDescVinculo.SelectedValue = dao.Tpo_vinc_opcao;

            // guarda na sessão o idt do mestre
            Session[Page.ToString() + "_IdtMestre"] = dao.Idt_acao;
        }

        protected void DesabilitaControles()
        {
            BiblioSERIX.DesabilitaControle(txtDescricao);
            BiblioSERIX.DesabilitaControle(txtRotulo);
            //BiblioSERIX.DesabilitaControle(txtIndicadorLimite);
            BiblioSERIX.DesabilitaControle(ddlIndicadorLimite);
            BiblioSERIX.DesabilitaControle(ddlTipos);
            BiblioSERIX.DesabilitaControle(ddlTotalizadores);
            BiblioSERIX.DesabilitaControle(ddlVinculos);
            BiblioSERIX.DesabilitaControle(ddlDescVinculo);
            BiblioSERIX.DesabilitaControle(ddlClasses);
            
            //LovIndicadores1.Visible = false;
        }

        protected void Ok_Button_Click(object sender, EventArgs e)
        {
            try
            {
                string login = UsuAut.Login;
                CIndicadoresAcoes dao = SetDados(login);
                switch (_operacao)
                {
                    case "I":
                        {
                            dao.Inserir(login);
                            break;
                        }
                    case "U":
                        {
                            dao.Alterar(login);
                            break;
                        }
                    case "D":
                        {
                            dao.Excluir(login);
                            break;
                        }
                    default: break;
                }
                Response.Redirect("IndicadoresAcao.aspx?&idt=" + Server.UrlEncode(Criptografia.Criptografar(_idtMestre)));
            }
            catch (Exception ex)
            {
                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }
        }

        private CIndicadoresAcoes SetDados(string login)
        {
            if (String.IsNullOrEmpty(_idt) && _operacao[0].Equals('I'))
            {
                _idt = CIndicadoresAcoes.ObterNovoIdt(login).ToString();
            }
            //string _idtLimite = txtIndicadorLimite.Attributes["chave"].ToString();
            string idtProg = lblPrograma.Attributes["idtProg"].ToString();

            CIndicadoresAcoes dao = new CIndicadoresAcoes(_idt, idtProg, _idtMestre, txtRotulo.Text, ddlTipos.SelectedValue, ddlVinculos.SelectedValue, ddlTotalizadores.SelectedValue, ddlClasses.SelectedValue, txtDescricao.Text, ddlDescVinculo.SelectedValue, ddlIndicadorLimite.SelectedValue);
            return dao;
        }

        protected void Cancelar_Button_Click(object sender, EventArgs e)
        {
            Response.Redirect("IndicadoresAcao.aspx?&idt=" + Server.UrlEncode(Criptografia.Criptografar(_idtMestre)));
        }

        protected void ddlClasses_PreRender(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ddlClasses.Items.Insert(0, new ListItem());
                ddlClasses.SelectedValue = _idtClasse;
            }
        }
    
        protected void ddlIndicadorLimite_PreRender(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ddlIndicadorLimite.Items.Insert(0, new ListItem());
                ddlIndicadorLimite.SelectedValue = _idtIndLimite;
            }
        }
    }
}
